Dream is an easy-to-use, boilerplate-free Web framework, whose entire API fits on this page! It supports TLS, WebSockets, and GraphQL. HTTP/2 support is transparent. A nice log and OCaml runtime configuration. Easy-to-use, secure helpers for round-tripping cookies and forms. Templates that interleave OCaml with already-familiar HTML. A fully composable router. Session management with pluggable back ends; and unified error handling that leaks no English strings from any level of your app. You can integrate Dream into a fully self-contained binary, or run it in large deployments behind proxies. Dream assumes no databases, environment variables, or configuration files, and requires no setup beyond installing the one package, dream. Dream sticks to base OCaml types as much as possible, introducing only a few types of its own. Dream handlers and middlewares are just bare functions. Dream has a flat namespace and aims for maximal clarity.